#include <msg_node.h>

MsgNode::MsgNode(uint64_t maxLen):totalLen_(maxLen),curLen_(0)
{
	data_ = new char[maxLen+1];
	memset(data_, 0, maxLen+1);
}

MsgNode::~MsgNode()
{
	std::cout << "destroy msgNode" << std::endl;
	delete[] data_;
}

void MsgNode::clear()
{
	memset(data_, 0, totalLen_);
	curLen_ = 0;
}

SendNode::SendNode(char* msg,short msgId, int64_t maxLen) :MsgNode(maxLen+MSG_HEADER_LEN), msgId_(msgId)
{
	// data_中包含了 msgId_, dataLen_,value, 发送时只会发送data_部分
	short msgIdNetwork = htons(msgId_);
	long long msgDataLenNetwork = htonl(maxLen);
	memcpy(data_, &msgIdNetwork, MSG_ID_LEN);
	memcpy(data_ + MSG_ID_LEN, &msgDataLenNetwork, MSG_DATA_LEN);
	memcpy(data_ + MSG_HEADER_LEN, msg, maxLen);
}

RecvNode::RecvNode(short msgId, int maxLen) :MsgNode(maxLen), msgId_(msgId)
{

}
